﻿using System;
using System.Windows;

namespace ArrayExample
{
    public partial class Fenetre : Window
    {
        public Fenetre()
        {
            InitializeComponent();
        }

        public void Sortie(Object unObjet)
        {
            if (unObjet != null)
            {
                rtb.AppendText(unObjet.ToString() + "\n");
            }
        }

        private void lancerExemple_Click(object sender, RoutedEventArgs e)
        {
            Animal[] tableauAnimaux = new Animal[5];

            tableauAnimaux[0] = new Lion();
            tableauAnimaux[1] = new Antilope();
            tableauAnimaux[2] = new Elephant();
            tableauAnimaux[3] = new Lion();
            tableauAnimaux[4] = new Elephant();

            // AFAIRE: Ecrire une boucle foreach listant les animaux
            // présents dans le tableau tableauAnimaux et les affichant
            // dans la forme en utilisant la méthode Sortie

            foreach (Animal animal in tableauAnimaux)
            {
                Sortie(animal.Espece);
            }

            // Exemple de sortie - vous pouvez ensuite effacer
            // cette ligne après avoir implémenté la boucle foreach
            // Sortie ( tableauAnimaux[0].Espece);
        }
    }

    public abstract class Animal
    {
        public abstract string Espece { get; }
    }

    public class Antilope : Animal
    {
        public override string Espece
        {
            get
            {
                return "Bovidae";
            }
        }
    }

    public class Lion : Animal
    {
        public override string Espece
        {
            get
            {
                return "Panthera Leo";
            }
        }
    }

    public class Elephant : Animal
    {
        public override string Espece
        {
            get // Elephant Africain
            {
                return "Loxondonta Africana";
            }
        }
    }
}
